        <!DOCTYPE html>
        <html>
        <head>
                <meta charset="utf-8">
        <title>DistanceJoint class / box2d_html Library / Dart Documentation</title>
        <link rel="stylesheet" type="text/css"
            href="../styles.css">
        <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,800" rel="stylesheet" type="text/css">
        <link rel="shortcut icon" href="../favicon.ico">
        
        </head>
        <body data-library="box2d_html" data-type="DistanceJoint">
        <div class="page">
        <div class="header">
          <a href="../index.html"><div class="logo"></div></a>
          <a href="../index.html">Dart Documentation</a>
         &rsaquo; <a href="../box2d_html.html">box2d_html</a> &rsaquo; <a href="../box2d_html/DistanceJoint.html">DistanceJoint</a>        <div id="search-box">
          <input type="search" name="q" id="q" autocomplete="off"
              class="search-input" placeholder="Search API">
        </div>
        
      </div>
      <div class="drop-down" id="drop-down"></div>
      
        <div class="nav">
        
</div>
<div class="content">
        <h2><strong>DistanceJoint</strong>
          class
        </h2>
        
<button id="show-inherited" class="show-inherited">Hide inherited</button>
<div class="doc">
<p>A distance joint constrains two points on two bodies
to remain at a fixed distance from each other. You can view
this as a massless, rigid rod.</p>
<pre class="source">
class DistanceJoint extends Joint {
  final Vector localAnchor1;
  final Vector localAnchor2;
  final Vector u;
  num impulse;

  /** Effective mass for the constraint. */
  num mass;
  num length;
  num frequencyHz;
  num dampingRatio;
  num gamma;
  num bias;

  DistanceJoint(DistanceJointDef def) :
    super(def),
    localAnchor1 = new Vector.copy(def.localAnchorA),
    localAnchor2 = new Vector.copy(def.localAnchorB),
    length = def.length,
    impulse = 0.0,
    u = new Vector(),
    frequencyHz = def.frequencyHz,
    dampingRatio = def.dampingRatio,
    gamma = 0.0,
    bias = 0.0 { }

  void getAnchorA(Vector argOut) {
    bodyA.getWorldPointToOut(localAnchor1, argOut);
  }

  void getAnchorB(Vector argOut) {
    bodyB.getWorldPointToOut(localAnchor2, argOut);
  }

  void getReactionForce(num inv_dt, Vector argOut) {
    argOut.x = impulse * u.x * inv_dt;
    argOut.y = impulse * u.y * inv_dt;
  }

  num getReactionTorque(num inv_dt) {
    return 0.0;
  }

  void initVelocityConstraints(TimeStep step) {
    final Body b1 = bodyA;
    final Body b2 = bodyB;

    Vector r1 = new Vector();
    Vector r2 = new Vector();

    // Compute the effective mass matrix.
    r1.setFrom(localAnchor1).subLocal(b1.localCenter);
    r2.setFrom(localAnchor2).subLocal(b2.localCenter);
    Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
    Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

    u.x = b2.sweep.center.x + r2.x - b1.sweep.center.x - r1.x;
    u.y = b2.sweep.center.y + r2.y - b1.sweep.center.y - r1.y;

    // Handle singularity.
    num len = u.length;
    if (len &gt; Settings.LINEAR_SLOP) {
      u.x *= 1.0 / len;
      u.y *= 1.0 / len;
    } else {
      u.setCoords(0.0, 0.0);
    }

    num cr1u = Vector.crossVectors(r1, u);
    num cr2u = Vector.crossVectors(r2, u);

    num invMass = b1.invMass + b1.invInertia * cr1u * cr1u + b2.invMass
        + b2.invInertia * cr2u * cr2u;
    assert (invMass &gt; Settings.EPSILON);
    mass = 1.0 / invMass;

    if (frequencyHz &gt; 0.0) {
      num C = len - length;

      // Frequency
      num omega = MathBox.TWO_PI * frequencyHz;

      // Damping coefficient
      num d = 2.0 * mass * dampingRatio * omega;

      // Spring stiffness
      num k = mass * omega * omega;

      // magic formulas
      gamma = step.dt * (d + step.dt * k);
      gamma = gamma != 0.0 ? 1.0 / gamma : 0.0;
      bias = C * step.dt * k * gamma;

      mass = invMass + gamma;
      mass = mass != 0.0 ? 1.0 / mass : 0.0;
    }

    if (step.warmStarting) {
      // Scale the impulse to support a variable time step.
      impulse *= step.dtRatio;

      Vector P = new Vector();
      P.setFrom(u).mulLocal(impulse);

      b1.linearVelocity.x -= b1.invMass * P.x;
      b1.linearVelocity.y -= b1.invMass * P.y;
      b1.angularVelocity -= b1.invInertia * Vector.crossVectors(r1, P);

      b2.linearVelocity.x += b2.invMass * P.x;
      b2.linearVelocity.y += b2.invMass * P.y;
      b2.angularVelocity += b2.invInertia * Vector.crossVectors(r2, P);
    } else {
      impulse = 0.0;
    }
  }

  void solveVelocityConstraints(TimeStep step) {
    final Body b1 = bodyA;
    final Body b2 = bodyB;

    final r1 = new Vector();
    final r2 = new Vector();

    r1.setFrom(localAnchor1).subLocal(b1.localCenter);
    r2.setFrom(localAnchor2).subLocal(b2.localCenter);
    Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
    Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

    final v1 = new Vector();
    final v2 = new Vector();

    Vector.crossNumAndVectorToOut(b1.angularVelocity, r1, v1);
    Vector.crossNumAndVectorToOut(b2.angularVelocity, r2, v2);
    v1.addLocal(b1.linearVelocity);
    v2.addLocal(b2.linearVelocity);

    num Cdot = Vector.dot(u, v2.subLocal(v1));

    num imp = -mass * (Cdot + bias + gamma * impulse);
    impulse += imp;

    num Px = imp * u.x;
    num Py = imp * u.y;
    b1.linearVelocity.x -= b1.invMass * Px;
    b1.linearVelocity.y -= b1.invMass * Py;
    b1.angularVelocity -= b1.invInertia * (r1.x * Py - r1.y * Px);
    b2.linearVelocity.x += b2.invMass * Px;
    b2.linearVelocity.y += b2.invMass * Py;
    b2.angularVelocity += b2.invInertia * (r2.x * Py - r2.y * Px);
  }

  bool solvePositionConstraints(num baumgarte) {
    if (frequencyHz &gt; 0.0) {
      return true;
    }

    final b1 = bodyA;
    final b2 = bodyB;

    final r1 = new Vector();
    final r2 = new Vector();
    final d = new Vector();

    r1.setFrom(localAnchor1).subLocal(b1.localCenter);
    r2.setFrom(localAnchor2).subLocal(b2.localCenter);
    Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
    Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

    d.x = b2.sweep.center.x + r2.x - b1.sweep.center.x - r1.x;
    d.y = b2.sweep.center.y + r2.y - b1.sweep.center.y - r1.y;

    num len = d.normalize();
    num C = len - length;
    C = MathBox.clamp(C, -Settings.MAX_LINEAR_CORRECTION,
        Settings.MAX_LINEAR_CORRECTION);

    num imp = -mass * C;
    u.setFrom(d);
    num Px = imp * u.x;
    num Py = imp * u.y;

    b1.sweep.center.x -= b1.invMass * Px;
    b1.sweep.center.y -= b1.invMass * Py;
    b1.sweep.angle -= b1.invInertia * (r1.x * Py - r1.y * Px);

    b2.sweep.center.x += b2.invMass * Px;
    b2.sweep.center.y += b2.invMass * Py;
    b2.sweep.angle += b2.invInertia * (r2.x * Py - r2.y * Px);

    b1.synchronizeTransform();
    b2.synchronizeTransform();

    return C.abs() &lt; Settings.LINEAR_SLOP;
  }
}
</pre>
</div>
<h3>Extends</h3>
<p>
<span class="type-box"><span class="icon-class"></span><a href="../box2d_html/Joint.html">Joint</a></span>&nbsp;&gt;&nbsp;<span class="type-box"><span class="icon-class"></span><strong>DistanceJoint</strong></span></p>
<div>
<h3>Constructors</h3>
<div class="method"><h4 id="DistanceJoint">
<button class="show-code">Code</button>
new <strong>DistanceJoint</strong>(<a href="../box2d_html/DistanceJointDef.html">DistanceJointDef</a> def) <a class="anchor-link" href="#DistanceJoint"
              title="Permalink to DistanceJoint.DistanceJoint">#</a></h4>
<div class="doc">
<pre class="source">
DistanceJoint(DistanceJointDef def) :
  super(def),
  localAnchor1 = new Vector.copy(def.localAnchorA),
  localAnchor2 = new Vector.copy(def.localAnchorB),
  length = def.length,
  impulse = 0.0,
  u = new Vector(),
  frequencyHz = def.frequencyHz,
  dampingRatio = def.dampingRatio,
  gamma = 0.0,
  bias = 0.0 { }
</pre>
</div>
</div>
</div>
<div>
<h3>Properties</h3>
<div class="field inherited"><h4 id="active">
<button class="show-code">Code</button>
final bool         <strong>active</strong> <a class="anchor-link"
            href="#active"
            title="Permalink to DistanceJoint.active">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<p>Short-cut function to determine if either body is inactive.</p>
<pre class="source">
bool get active() {
  return bodyA.active &amp;&amp; bodyB.active;
}
</pre>
</div>
</div>
<div class="field"><h4 id="bias">
<button class="show-code">Code</button>
num         <strong>bias</strong> <a class="anchor-link"
            href="#bias"
            title="Permalink to DistanceJoint.bias">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num bias;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="bodyA">
<button class="show-code">Code</button>
<a href="../box2d_html/Body.html">Body</a>         <strong>bodyA</strong> <a class="anchor-link"
            href="#bodyA"
            title="Permalink to DistanceJoint.bodyA">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
Body bodyA;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="bodyB">
<button class="show-code">Code</button>
<a href="../box2d_html/Body.html">Body</a>         <strong>bodyB</strong> <a class="anchor-link"
            href="#bodyB"
            title="Permalink to DistanceJoint.bodyB">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
Body bodyB;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="collideConnected">
<button class="show-code">Code</button>
bool         <strong>collideConnected</strong> <a class="anchor-link"
            href="#collideConnected"
            title="Permalink to DistanceJoint.collideConnected">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
bool collideConnected;
</pre>
</div>
</div>
<div class="field"><h4 id="dampingRatio">
<button class="show-code">Code</button>
num         <strong>dampingRatio</strong> <a class="anchor-link"
            href="#dampingRatio"
            title="Permalink to DistanceJoint.dampingRatio">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num dampingRatio;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="edgeA">
<button class="show-code">Code</button>
<a href="../box2d_html/JointEdge.html">JointEdge</a>         <strong>edgeA</strong> <a class="anchor-link"
            href="#edgeA"
            title="Permalink to DistanceJoint.edgeA">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
JointEdge edgeA;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="edgeB">
<button class="show-code">Code</button>
<a href="../box2d_html/JointEdge.html">JointEdge</a>         <strong>edgeB</strong> <a class="anchor-link"
            href="#edgeB"
            title="Permalink to DistanceJoint.edgeB">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
JointEdge edgeB;
</pre>
</div>
</div>
<div class="field"><h4 id="frequencyHz">
<button class="show-code">Code</button>
num         <strong>frequencyHz</strong> <a class="anchor-link"
            href="#frequencyHz"
            title="Permalink to DistanceJoint.frequencyHz">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num frequencyHz;
</pre>
</div>
</div>
<div class="field"><h4 id="gamma">
<button class="show-code">Code</button>
num         <strong>gamma</strong> <a class="anchor-link"
            href="#gamma"
            title="Permalink to DistanceJoint.gamma">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num gamma;
</pre>
</div>
</div>
<div class="field"><h4 id="impulse">
<button class="show-code">Code</button>
num         <strong>impulse</strong> <a class="anchor-link"
            href="#impulse"
            title="Permalink to DistanceJoint.impulse">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num impulse;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="invIA">
<button class="show-code">Code</button>
num         <strong>invIA</strong> <a class="anchor-link"
            href="#invIA"
            title="Permalink to DistanceJoint.invIA">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
num invIA;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="invIB">
<button class="show-code">Code</button>
num         <strong>invIB</strong> <a class="anchor-link"
            href="#invIB"
            title="Permalink to DistanceJoint.invIB">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
num invIB;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="invMassA">
<button class="show-code">Code</button>
num         <strong>invMassA</strong> <a class="anchor-link"
            href="#invMassA"
            title="Permalink to DistanceJoint.invMassA">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
num invMassA;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="invMassB">
<button class="show-code">Code</button>
num         <strong>invMassB</strong> <a class="anchor-link"
            href="#invMassB"
            title="Permalink to DistanceJoint.invMassB">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
num invMassB;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="islandFlag">
<button class="show-code">Code</button>
bool         <strong>islandFlag</strong> <a class="anchor-link"
            href="#islandFlag"
            title="Permalink to DistanceJoint.islandFlag">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
bool islandFlag;
</pre>
</div>
</div>
<div class="field"><h4 id="length">
<button class="show-code">Code</button>
num         <strong>length</strong> <a class="anchor-link"
            href="#length"
            title="Permalink to DistanceJoint.length">#</a>
        </h4>
        <div class="doc">
<pre class="source">
num length;
</pre>
</div>
</div>
<div class="field"><h4 id="localAnchor1">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localAnchor1</strong> <a class="anchor-link"
            href="#localAnchor1"
            title="Permalink to DistanceJoint.localAnchor1">#</a>
        </h4>
        <div class="doc">
<pre class="source">
final Vector localAnchor1;
</pre>
</div>
</div>
<div class="field"><h4 id="localAnchor2">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localAnchor2</strong> <a class="anchor-link"
            href="#localAnchor2"
            title="Permalink to DistanceJoint.localAnchor2">#</a>
        </h4>
        <div class="doc">
<pre class="source">
final Vector localAnchor2;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="localCenterA">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localCenterA</strong> <a class="anchor-link"
            href="#localCenterA"
            title="Permalink to DistanceJoint.localCenterA">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
final Vector localCenterA;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="localCenterB">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>localCenterB</strong> <a class="anchor-link"
            href="#localCenterB"
            title="Permalink to DistanceJoint.localCenterB">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
final Vector localCenterB;
</pre>
</div>
</div>
<div class="field"><h4 id="mass">
<button class="show-code">Code</button>
num         <strong>mass</strong> <a class="anchor-link"
            href="#mass"
            title="Permalink to DistanceJoint.mass">#</a>
        </h4>
        <div class="doc">
<p>Effective mass for the constraint.</p>
<pre class="source">
num mass;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="runtimeType">
<button class="show-code">Code</button>
final Type         <strong>runtimeType</strong> <a class="anchor-link"
            href="#runtimeType"
            title="Permalink to DistanceJoint.runtimeType">#</a>
        </h4>
        <div class="inherited-from">inherited from Object </div><div class="doc">
<p>A representation of the runtime type of the object.</p>
<pre class="source">
external Type get runtimeType;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="type">
<button class="show-code">Code</button>
int         <strong>type</strong> <a class="anchor-link"
            href="#type"
            title="Permalink to DistanceJoint.type">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
int type;
</pre>
</div>
</div>
<div class="field"><h4 id="u">
<button class="show-code">Code</button>
final <a href="../box2d_html/Vector.html">Vector</a>         <strong>u</strong> <a class="anchor-link"
            href="#u"
            title="Permalink to DistanceJoint.u">#</a>
        </h4>
        <div class="doc">
<pre class="source">
final Vector u;
</pre>
</div>
</div>
<div class="field inherited"><h4 id="userData">
<button class="show-code">Code</button>
Object         <strong>userData</strong> <a class="anchor-link"
            href="#userData"
            title="Permalink to DistanceJoint.userData">#</a>
        </h4>
        <div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
Object userData;
</pre>
</div>
</div>
</div>
<div>
<h3>Operators</h3>
<div class="method inherited"><h4 id="==">
<button class="show-code">Code</button>
bool <strong>operator ==</strong>(other) <a class="anchor-link" href="#=="
              title="Permalink to DistanceJoint.operator ==">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>The equality operator.</p>
<p>The default behavior for all <code>Object</code>s is to return true if and
only if <code>this</code> and 
<span class="param">other</span> are the same object.</p>
<p>If a subclass overrides the equality operator it should override
the <code>hashCode</code> method as well to maintain consistency.</p>
<pre class="source">
bool operator ==(other) =&gt; identical(this, other);
</pre>
</div>
</div>
</div>
<div>
<h3>Methods</h3>
<div class="method inherited"><h4 id="destructor">
<button class="show-code">Code</button>
void <strong>destructor</strong>() <a class="anchor-link" href="#destructor"
              title="Permalink to DistanceJoint.destructor">#</a></h4>
<div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<p>Override to handle destruction of joint</p>
<pre class="source">
void destructor() { }
</pre>
</div>
</div>
<div class="method"><h4 id="DistanceJoint">
<button class="show-code">Code</button>
new <strong>DistanceJoint</strong>(<a href="../box2d_html/DistanceJointDef.html">DistanceJointDef</a> def) <a class="anchor-link" href="#DistanceJoint"
              title="Permalink to DistanceJoint.DistanceJoint">#</a></h4>
<div class="doc">
<pre class="source">
DistanceJoint(DistanceJointDef def) :
  super(def),
  localAnchor1 = new Vector.copy(def.localAnchorA),
  localAnchor2 = new Vector.copy(def.localAnchorB),
  length = def.length,
  impulse = 0.0,
  u = new Vector(),
  frequencyHz = def.frequencyHz,
  dampingRatio = def.dampingRatio,
  gamma = 0.0,
  bias = 0.0 { }
</pre>
</div>
</div>
<div class="method"><h4 id="getAnchorA">
<button class="show-code">Code</button>
void <strong>getAnchorA</strong>(<a href="../box2d_html/Vector.html">Vector</a> argOut) <a class="anchor-link" href="#getAnchorA"
              title="Permalink to DistanceJoint.getAnchorA">#</a></h4>
<div class="doc">
<div class="inherited">
<p>Get the anchor point on bodyA in world coordinates.</p>
<div class="docs-inherited-from">docs inherited from <a href="../box2d_html/Joint.html">Joint</a> </div></div>
<pre class="source">
void getAnchorA(Vector argOut) {
  bodyA.getWorldPointToOut(localAnchor1, argOut);
}
</pre>
</div>
</div>
<div class="method"><h4 id="getAnchorB">
<button class="show-code">Code</button>
void <strong>getAnchorB</strong>(<a href="../box2d_html/Vector.html">Vector</a> argOut) <a class="anchor-link" href="#getAnchorB"
              title="Permalink to DistanceJoint.getAnchorB">#</a></h4>
<div class="doc">
<div class="inherited">
<p>Get the anchor point on bodyB in world coordinates.</p>
<div class="docs-inherited-from">docs inherited from <a href="../box2d_html/Joint.html">Joint</a> </div></div>
<pre class="source">
void getAnchorB(Vector argOut) {
  bodyB.getWorldPointToOut(localAnchor2, argOut);
}
</pre>
</div>
</div>
<div class="method"><h4 id="getReactionForce">
<button class="show-code">Code</button>
void <strong>getReactionForce</strong>(num inv_dt, <a href="../box2d_html/Vector.html">Vector</a> argOut) <a class="anchor-link" href="#getReactionForce"
              title="Permalink to DistanceJoint.getReactionForce">#</a></h4>
<div class="doc">
<div class="inherited">
<p>Get the reaction force on body2 at the joint anchor in Newtons.</p>
<div class="docs-inherited-from">docs inherited from <a href="../box2d_html/Joint.html">Joint</a> </div></div>
<pre class="source">
void getReactionForce(num inv_dt, Vector argOut) {
  argOut.x = impulse * u.x * inv_dt;
  argOut.y = impulse * u.y * inv_dt;
}
</pre>
</div>
</div>
<div class="method"><h4 id="getReactionTorque">
<button class="show-code">Code</button>
num <strong>getReactionTorque</strong>(num inv_dt) <a class="anchor-link" href="#getReactionTorque"
              title="Permalink to DistanceJoint.getReactionTorque">#</a></h4>
<div class="doc">
<div class="inherited">
<p>Get the reaction torque on body2 in N*m.</p>
<div class="docs-inherited-from">docs inherited from <a href="../box2d_html/Joint.html">Joint</a> </div></div>
<pre class="source">
num getReactionTorque(num inv_dt) {
  return 0.0;
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="hashCode">
<button class="show-code">Code</button>
int <strong>hashCode</strong>() <a class="anchor-link" href="#hashCode"
              title="Permalink to DistanceJoint.hashCode">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Get a hash code for this object.</p>
<p>All objects have hash codes. Hash codes are guaranteed to be the
same for objects that are equal when compared using the equality
operator <code>==</code>. Other than that there are no guarantees about
the hash codes. They will not be consistent between runs and
there are no distribution guarantees.</p>
<p>If a subclass overrides <code>hashCode</code> it should override the
equality operator as well to maintain consistency.</p>
<pre class="source">
external int hashCode();
</pre>
</div>
</div>
<div class="method"><h4 id="initVelocityConstraints">
<button class="show-code">Code</button>
void <strong>initVelocityConstraints</strong>(<a href="../box2d_html/TimeStep.html">TimeStep</a> step) <a class="anchor-link" href="#initVelocityConstraints"
              title="Permalink to DistanceJoint.initVelocityConstraints">#</a></h4>
<div class="doc">
<pre class="source">
void initVelocityConstraints(TimeStep step) {
  final Body b1 = bodyA;
  final Body b2 = bodyB;

  Vector r1 = new Vector();
  Vector r2 = new Vector();

  // Compute the effective mass matrix.
  r1.setFrom(localAnchor1).subLocal(b1.localCenter);
  r2.setFrom(localAnchor2).subLocal(b2.localCenter);
  Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
  Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

  u.x = b2.sweep.center.x + r2.x - b1.sweep.center.x - r1.x;
  u.y = b2.sweep.center.y + r2.y - b1.sweep.center.y - r1.y;

  // Handle singularity.
  num len = u.length;
  if (len &gt; Settings.LINEAR_SLOP) {
    u.x *= 1.0 / len;
    u.y *= 1.0 / len;
  } else {
    u.setCoords(0.0, 0.0);
  }

  num cr1u = Vector.crossVectors(r1, u);
  num cr2u = Vector.crossVectors(r2, u);

  num invMass = b1.invMass + b1.invInertia * cr1u * cr1u + b2.invMass
      + b2.invInertia * cr2u * cr2u;
  assert (invMass &gt; Settings.EPSILON);
  mass = 1.0 / invMass;

  if (frequencyHz &gt; 0.0) {
    num C = len - length;

    // Frequency
    num omega = MathBox.TWO_PI * frequencyHz;

    // Damping coefficient
    num d = 2.0 * mass * dampingRatio * omega;

    // Spring stiffness
    num k = mass * omega * omega;

    // magic formulas
    gamma = step.dt * (d + step.dt * k);
    gamma = gamma != 0.0 ? 1.0 / gamma : 0.0;
    bias = C * step.dt * k * gamma;

    mass = invMass + gamma;
    mass = mass != 0.0 ? 1.0 / mass : 0.0;
  }

  if (step.warmStarting) {
    // Scale the impulse to support a variable time step.
    impulse *= step.dtRatio;

    Vector P = new Vector();
    P.setFrom(u).mulLocal(impulse);

    b1.linearVelocity.x -= b1.invMass * P.x;
    b1.linearVelocity.y -= b1.invMass * P.y;
    b1.angularVelocity -= b1.invInertia * Vector.crossVectors(r1, P);

    b2.linearVelocity.x += b2.invMass * P.x;
    b2.linearVelocity.y += b2.invMass * P.y;
    b2.angularVelocity += b2.invInertia * Vector.crossVectors(r2, P);
  } else {
    impulse = 0.0;
  }
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="Joint">
<button class="show-code">Code</button>
new <strong>Joint</strong>(<a href="../box2d_html/JointDef.html">JointDef</a> def) <a class="anchor-link" href="#Joint"
              title="Permalink to DistanceJoint.Joint">#</a></h4>
<div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
Joint(JointDef def) :
  type = def.type,
  _prev = null,
  _next = null,
  bodyA = def.bodyA,
  bodyB = def.bodyB,
  collideConnected = def.collideConnected,
  islandFlag = false,
  userData = def.userData,

  localCenterA = new Vector(),
  localCenterB = new Vector(),
  edgeA = new JointEdge(),
  edgeB = new JointEdge() { }
</pre>
</div>
</div>
<div class="method inherited"><h4 id="Joint.create">
<button class="show-code">Code</button>
factory <strong>Joint.create</strong>(<a href="../box2d_html/World.html">World</a> argWorld, <a href="../box2d_html/JointDef.html">JointDef</a> def) <a class="anchor-link" href="#Joint.create"
              title="Permalink to DistanceJoint.Joint.create">#</a></h4>
<div class="inherited-from">inherited from <a href="../box2d_html/Joint.html">Joint</a> </div><div class="doc">
<pre class="source">
factory Joint.create(World argWorld, JointDef def) {
  switch(def.type){
    case JointType.MOUSE:
      throw new NotImplementedException();
      //  return new MouseJoint(def);
    case JointType.DISTANCE:
      return new DistanceJoint(def);
    case JointType.PRISMATIC:
      throw new NotImplementedException();
      //  return new PrismaticJoint(def);
    case JointType.REVOLUTE:
      return new RevoluteJoint(def);
    case JointType.WELD:
      throw new NotImplementedException();
      //return new WeldJoint(def);
    case JointType.FRICTION:
      return new FrictionJoint(def);
    case JointType.LINE:
      throw new NotImplementedException();
      //return new LineJoint(def);
    case JointType.GEAR:
      throw new NotImplementedException();
      //return new GearJoint(def);
    case JointType.PULLEY:
      throw new NotImplementedException();
      //return new PulleyJoint(def);
    case JointType.CONSTANT_VOLUME:
      return new ConstantVolumeJoint(argWorld, def);
  }
  return null;
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="noSuchMethod">
<button class="show-code">Code</button>
<strong>noSuchMethod</strong>(String name, List args) <a class="anchor-link" href="#noSuchMethod"
              title="Permalink to DistanceJoint.noSuchMethod">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p><code>noSuchMethod</code> is invoked when users invoke a non-existant method
on an object. The name of the method and the arguments of the
invocation are passed to <code>noSuchMethod</code>. If <code>noSuchMethod</code>
returns a value, that value becomes the result of the original
invocation.</p>
<p>The default behavior of <code>noSuchMethod</code> is to throw a
<code>noSuchMethodError</code>.</p>
<pre class="source">
external Dynamic noSuchMethod(String name, List args);
</pre>
</div>
</div>
<div class="method inherited"><h4 id="Object">
<button class="show-code">Code</button>
const <strong>Object</strong>() <a class="anchor-link" href="#Object"
              title="Permalink to DistanceJoint.Object">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Creates a new <code>Object</code> instance.</p>
<p><code>Object</code> instances have no meaningful state, and are only useful
through their identity. An <code>Object</code> instance is equal to itself
only.</p>
<pre class="source">
const Object();
</pre>
</div>
</div>
<div class="method"><h4 id="solvePositionConstraints">
<button class="show-code">Code</button>
bool <strong>solvePositionConstraints</strong>(num baumgarte) <a class="anchor-link" href="#solvePositionConstraints"
              title="Permalink to DistanceJoint.solvePositionConstraints">#</a></h4>
<div class="doc">
<div class="inherited">
<p>This returns true if the position errors are within tolerance.</p>
<div class="docs-inherited-from">docs inherited from <a href="../box2d_html/Joint.html">Joint</a> </div></div>
<pre class="source">
bool solvePositionConstraints(num baumgarte) {
  if (frequencyHz &gt; 0.0) {
    return true;
  }

  final b1 = bodyA;
  final b2 = bodyB;

  final r1 = new Vector();
  final r2 = new Vector();
  final d = new Vector();

  r1.setFrom(localAnchor1).subLocal(b1.localCenter);
  r2.setFrom(localAnchor2).subLocal(b2.localCenter);
  Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
  Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

  d.x = b2.sweep.center.x + r2.x - b1.sweep.center.x - r1.x;
  d.y = b2.sweep.center.y + r2.y - b1.sweep.center.y - r1.y;

  num len = d.normalize();
  num C = len - length;
  C = MathBox.clamp(C, -Settings.MAX_LINEAR_CORRECTION,
      Settings.MAX_LINEAR_CORRECTION);

  num imp = -mass * C;
  u.setFrom(d);
  num Px = imp * u.x;
  num Py = imp * u.y;

  b1.sweep.center.x -= b1.invMass * Px;
  b1.sweep.center.y -= b1.invMass * Py;
  b1.sweep.angle -= b1.invInertia * (r1.x * Py - r1.y * Px);

  b2.sweep.center.x += b2.invMass * Px;
  b2.sweep.center.y += b2.invMass * Py;
  b2.sweep.angle += b2.invInertia * (r2.x * Py - r2.y * Px);

  b1.synchronizeTransform();
  b2.synchronizeTransform();

  return C.abs() &lt; Settings.LINEAR_SLOP;
}
</pre>
</div>
</div>
<div class="method"><h4 id="solveVelocityConstraints">
<button class="show-code">Code</button>
void <strong>solveVelocityConstraints</strong>(<a href="../box2d_html/TimeStep.html">TimeStep</a> step) <a class="anchor-link" href="#solveVelocityConstraints"
              title="Permalink to DistanceJoint.solveVelocityConstraints">#</a></h4>
<div class="doc">
<pre class="source">
void solveVelocityConstraints(TimeStep step) {
  final Body b1 = bodyA;
  final Body b2 = bodyB;

  final r1 = new Vector();
  final r2 = new Vector();

  r1.setFrom(localAnchor1).subLocal(b1.localCenter);
  r2.setFrom(localAnchor2).subLocal(b2.localCenter);
  Matrix22.mulMatrixAndVectorToOut(b1.originTransform.rotation, r1, r1);
  Matrix22.mulMatrixAndVectorToOut(b2.originTransform.rotation, r2, r2);

  final v1 = new Vector();
  final v2 = new Vector();

  Vector.crossNumAndVectorToOut(b1.angularVelocity, r1, v1);
  Vector.crossNumAndVectorToOut(b2.angularVelocity, r2, v2);
  v1.addLocal(b1.linearVelocity);
  v2.addLocal(b2.linearVelocity);

  num Cdot = Vector.dot(u, v2.subLocal(v1));

  num imp = -mass * (Cdot + bias + gamma * impulse);
  impulse += imp;

  num Px = imp * u.x;
  num Py = imp * u.y;
  b1.linearVelocity.x -= b1.invMass * Px;
  b1.linearVelocity.y -= b1.invMass * Py;
  b1.angularVelocity -= b1.invInertia * (r1.x * Py - r1.y * Px);
  b2.linearVelocity.x += b2.invMass * Px;
  b2.linearVelocity.y += b2.invMass * Py;
  b2.angularVelocity += b2.invInertia * (r2.x * Py - r2.y * Px);
}
</pre>
</div>
</div>
<div class="method inherited"><h4 id="toString">
<button class="show-code">Code</button>
String <strong>toString</strong>() <a class="anchor-link" href="#toString"
              title="Permalink to DistanceJoint.toString">#</a></h4>
<div class="inherited-from">inherited from Object </div><div class="doc">
<p>Returns a string representation of this object.</p>
<pre class="source">
external String toString();
</pre>
</div>
</div>
</div>
        </div>
        <div class="clear"></div>
        </div>
        
        <div class="footer">
          
        </div>
        <script async src="../client-live-nav.js"></script>
        </body></html>
        
